package Day13.构造方法构造器;

/**
 * 1.一个类中可以定义多个不同的构造器，即构造器的重载
 * 比如：我们要再给Person定义一个构造器，用来创建对象的时候，只指定人名，不需要指定年龄
 * 2.构造器名和类名要相同
 * 3.构造器没有返回值
 * 4.构造器是完成对象的初始化，并不是创建对象
 * 5.在创建对象的时候，系统自动的调用该类的构造方法
 * 6.如果程序员没有定义构造器，系统会自动给类生成一个默认的无参构造器
 * 7.一旦定义了自己的构造器，那么默认的构造器就被覆盖掉了，就不能在使用默认的无参构造器了，除非显示的定义一下
 */
public class Demo02 {
    public static void main(String[] args) {
        Person1 p1 = new Person1("锦麟", 29);//第一个构造器
        Person1 p2=new Person1("tom");//第二个构造器

        Dog dog=new Dog();//使用的是默认的无参构造器
    }
}

class Dog {
    //如果程序员没有定义构造器，系统会自动给类生成一个默认的无参构造器
    //Dog() {
    //}
    //一旦定义了自己的构造器，那么默认的构造器就被覆盖掉了，就不能在使用默认的无参构造器了，除非显示的定义一下
    public Dog(String dName) {
        //方法体
    }

    Dog() {//显示的定义一下，无参构造器

    }
}

class Person1 {
    String name;
    int age;//默认值 0

    //第一个构造器
    public Person1(String pName, int pAge) {
        name = pName;
        age = pAge;
    }

    //第二个构造器
    public Person1(String pName) {
        name = pName;
    }
}